iT邦幫忙

2021 iThome 鐵人賽

DAY 3
0
自我挑戰組

社畜轉行之旅,30天Kotlin學習筆記系列 第 3

Day 3 | 物件控制與事件監聽

  • 分享至 

  • xImage
  •  

綁定:將xml中的元件與Kotlin程式碼做連結。

監聽事件:開發者可以在程式碼中攔截使用者的操作過程。

元件綁定

在Ch2的練習中有幫每一個元件設定了ID,此ID也可用於在程式碼中識別特定元件,查看MainActivity.kt可查看到下述程式碼

setContentView(R.layout.activity_main)

此段程式碼正是透過R類別指定要使用的layout檔為activity_main.xml,也就是將R.layout.activity_main作為參數傳遞給setContentView()方法,以完成元件與程式碼綁定

而針對XML中的元件則使用

val ed_name = findViewByID<EditText>(R.id.ed_name)

findViewByID()方法會依據傳入參數(R.id.xxx)的識別標籤,從XML找到對應的元件傳回至程式碼中。

由於findViewByID()型態為View,View型態是所有元件的原始類別,故需要明確告知此元件類型,例如上段程式碼中加入了,將View型態轉型(Casting)成EditText

當編寫完findViewByID()後會發現顯示「Unresolved reference」,這是因為它們來自其他套件,此時只要點選有問題的元件,按下Alt+Enter後,就會自動匯入程式碼

事件監聽

常見的四種監聽器,可以用「setOn」在AS中篩選可用監聽器

  1. OnClickListener

    • 短按點擊
    btn_mora.OnClickListener{
    }
    
  2. OnLongClickListener

    • 長按點擊(超過1秒)
    btn_mora.OnLongClickListener{
    		false
    }
    
  3. OnTouchClickListener

    • 觸摸(手指按下、手指放開、滑動)
    btn_mora.OnTouchClickListener{ v,event ->
    		false
    }
    
  4. OnCheckedChangeListener

    • 狀態改變(如RadioButton、Checkbox、Switch)
    btn_mora.OnCheckedChangeListener{ group,checkedId ->
    }
    

    TextView可以透過.text修改文字內容,但EditText必須將字串傳入setText()方法才能修改,所以開發者可以用toString()方法,將回傳資料轉換成字串類型使用


上一篇
Day 2 | 介面設計與元件布局
下一篇
Day 4 | Activity
系列文
社畜轉行之旅,30天Kotlin學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言